package org.puc.enquete.servlet;

import java.awt.Color;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.puc.enquete.ejb.EnqueteBeanLocal;
import org.puc.enquete.ejb.VotoBeanLocal;
import org.puc.enquete.entity.Enquete;
import org.puc.enquete.entity.Voto;

/**
 * Este servlet controla a página de estatísticas de uma enquete
 * Implementação: Luiz Ricardo
 */
public class MostrarEstatisticas extends HttpServlet {
   
    @EJB
    private EnqueteBeanLocal enqueteBean;
    @EJB
    private VotoBeanLocal votoBean;

    public static Color[] cores = {
        new Color(255, 69, 0), // vermelho claro
        new Color(102, 205, 170), // azul claro
        new Color(173, 255, 47), // verdinho
        new Color(219, 112, 147), // violeta
        new Color(123, 104, 238), // azul meio roxo
        new Color(255, 192, 203), // pink
        new Color(218, 165, 32), // dourado
        new Color(222, 184, 135), // marrom claro
        new Color(255, 165, 0), // laranja
        new Color(128, 128, 0), // oliva
        new Color(238, 130, 238), // violeta
        new Color(230, 230, 250), // lavanda
    };

    public String colorHex(Color c) {
        return Integer.toHexString(c.getRGB() & 0x00ffffff);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        try {

            String idEnquete = request.getParameter("enquete");

            if (idEnquete == null || idEnquete.trim().length() == 0) {

                throw new Exception("Estatística inválida!");

            }

            Enquete enquete = enqueteBean.obterEnquete(Integer.parseInt(idEnquete));
            List<Voto> votos = votoBean.listarVotosEnquete(enquete);

            log(" --> " +  votos.size());

            //define atributos
            request.setAttribute("enquete", enquete);
            request.setAttribute("totalVotos", enquete.getQuantidadeVotos());
            request.setAttribute("votos", votos);
            
            //coloca cores para gráfico primário
            ArrayList<String> listaCores = new ArrayList<String>();
            for (int i = 0; i < cores.length; i++) {

                listaCores.add("#" + colorHex(cores[i]));

            }

            request.setAttribute("listaCores", listaCores);

            //redireciona para página de exibição de estatísticas
            request.getRequestDispatcher("/jsp/mostrar_estatisticas.jsp").forward(request, response);

        } catch (Throwable e) {

            request.setAttribute("erro", e.getMessage());
            request.getRequestDispatcher("/ListarEnquetes").forward(request, response);

        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

}
